package controll;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;

import modell.Cidade;
import modell.Construtora;
import modell.Estado;

@ManagedBean(name = "construtoraBean")
@RequestScoped
public class ConstrutoraBean {
	private Construtora construtoraSelecionada = new Construtora();
	private List<Construtora> lista = null;
	private Estado estadoSelecionado;
	private Cidade cidadeSelecionada;
	private List<SelectItem> cidadesSelect;
	private List<SelectItem> estadosSelect;
	private boolean Exibir = false;
	
	@ManagedProperty(value = "#{navegacaoBean}")
	private NavegacaoBean navegacaoBean;

	public void setNavegacaoBean(NavegacaoBean navegacaoBean) {
		this.navegacaoBean = navegacaoBean;
	}
	
	public boolean showBotao(){
		return Exibir = true;
	}
	
	public boolean Exibir() {
		return Exibir;
	}

	public void setCidadesSelect(List<SelectItem> cidadesSelect) {
		this.cidadesSelect = cidadesSelect;
	}

	public void setEstadosSelect(List<SelectItem> estadosSelect) {
		this.estadosSelect = estadosSelect;
	}

	public void salvar() {
		ConstrutoraRN construtoraRN = new ConstrutoraRN();
		FacesMessage faces = null;
		
		construtoraSelecionada.setCidade(cidadeSelecionada);
		construtoraSelecionada.setStatus(true);
		construtoraSelecionada.setDataCadastro(new Date());
		if (this.construtoraSelecionada.getId() != null
				&& this.construtoraSelecionada.getId() != 0) {
			construtoraRN.alterar(construtoraSelecionada);
			faces = new FacesMessage("Construtora editada com sucesso!");
		} else {
			
			construtoraRN.salvar(construtoraSelecionada);
			faces = new FacesMessage(
					"Construtora cadastrada com sucesso!");
		}
		FacesContext contexto = FacesContext.getCurrentInstance();
		contexto.addMessage(null, faces);
		this.lista = null;
	}

	public Construtora getConstrutoraSelecionada() {
		return construtoraSelecionada;
	}

	public void setConstrutoraSelecionada(Construtora construtoraSelecionada) {
		this.construtoraSelecionada = construtoraSelecionada;
	}

	public List<Construtora> getLista() {
		ConstrutoraRN construtoraRN = new ConstrutoraRN();
		if (lista == null) {
			lista = construtoraRN.listarAtivos(true);
		}
		return lista;
	}

	public String excluir(Boolean status) {
		ConstrutoraRN construtoraRN = new ConstrutoraRN();
		construtoraSelecionada.setDataCadastro(new Date());
		construtoraSelecionada.setStatus(status);
		construtoraRN.alterar(construtoraSelecionada);
		this.lista = null;
		return null;
	}

	public void novo() {
		this.construtoraSelecionada = new Construtora();
		//return navegacaoBean.redirectToConstrutora();

	}
	
	public Cidade getCidadeSelecionada() {
		return cidadeSelecionada;
	}

	public void setCidadeSelecionada(Cidade cidadeSelecionada) {
		this.cidadeSelecionada = cidadeSelecionada;
	}

	public List<SelectItem> getCidadesSelect() {
		if (this.cidadesSelect == null) {
			cidadesSelect = new ArrayList<SelectItem>();
			CidadeRN cidadeRN = new CidadeRN();
			List<Cidade> listaCidade = cidadeRN.listar();
			if (listaCidade != null && !listaCidade.isEmpty()) {
				SelectItem item;
				for (Cidade cidadeLista : listaCidade) {
					item = new SelectItem(cidadeLista, cidadeLista.getNome());
					cidadesSelect.add(item);
				}
			}
		}
		return cidadesSelect;
	}

	public List<SelectItem> getEstadosSelect() {
		if (this.estadosSelect == null) {
			estadosSelect = new ArrayList<SelectItem>();
			EstadoRN estadoRN = new EstadoRN();
			List<Estado> listaEstado = estadoRN.listar();
			if (listaEstado != null && !listaEstado.isEmpty()) {
				SelectItem item;
				for (Estado estadoLista : listaEstado) {
					item = new SelectItem(estadoLista, estadoLista.getNome());
					estadosSelect.add(item);
				}
			}
		}
		return estadosSelect;
	}

	public Estado getEstadoSelecionado() {
		return estadoSelecionado;
	}

	public void setEstadoSelecionado(Estado estadoSelecionado) {
		this.estadoSelecionado = estadoSelecionado;
	}


}
